From 2cb8778ad38a74227c3a7426ed3d9901dea401cd Mon Sep 17 00:00:00 2001 From: Alex Williamson Date: Fri, 7 Mar 2008 12:26:27 -0700 Subject: [PATCH] [IA64] Stop collision chain search after match is found No need to continue to search collision chain after one is found since guest TLB can't have any overlap. Signed-off-by: Dong Yaozu Signed-off-by: Zhang Xiantao --- xen/arch/ia64/vmx/vtlb.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/xen/arch/ia64/vmx/vtlb.c b/xen/arch/ia64/vmx/vtlb.c index 8926bd3186..f956b68898 100644 --- a/xen/arch/ia64/vmx/vtlb.c +++ b/xen/arch/ia64/vmx/vtlb.c @@ -324,8 +324,10 @@ static void vtlb_purge(VCPU *v, u64 va, u64 ps) while (num) { cur = vtlb_thash(hcb->pta, curadr, vrr.rrval, &tag); while (cur) { - if (cur->etag == tag && cur->ps == rr_ps) + if (cur->etag == tag && cur->ps == rr_ps) { cur->etag = 1UL << 63; + break; + } cur = cur->next; } curadr += size; @@ -353,8 +355,10 @@ static void vhpt_purge(VCPU *v, u64 va, u64 ps) cur = (thash_data_t *)ia64_thash(start); tag = ia64_ttag(start); while (cur) { - if (cur->etag == tag) + if (cur->etag == tag) { cur->etag = 1UL << 63; + break; + } cur = cur->next; } start += size; -- 2.30.2